package br.unicamp.ic.mc906.kmeans;

/**
 * Classe usada para representar uma centroid utilizada pelo kmeans
 * @author guilherme
 *
 */
public class Centroide<T extends KmeansInterface<T>> {
	private T center;
	private Cluster<T> cluster;

	
	public Centroide(T center) {
		this.center = center;
	}
	
	/**
	 * Metodo get para a Centroide
	 * @return Retorna o elemento central do cluster
	 */
	public T getCenter() {
		return center;
	}

	/**
	 * Metodo set para a Centroide
	 * @param centro
	 */
	public void setCenter(T centro) {
		this.center = centro;
	}

	/**
	 * Metodo responsavel por retornar a distancia de um elemento do Centroide
	 * @param element a ser comparado
	 * @return distancia
	 */
	public double distanceToCentroid(T element) {
		return element.getDistance(center);
	}

	/**
	 * Metodo para recuperar o Cluster do centroide
	 * @return
	 */
	public Cluster<T> getCluster() {
		return cluster;
	}

	/**
	 * Metodo para definir o Cluster do centroide
	 * @param cluster
	 */
	public void setCluster(Cluster<T> cluster) {
		this.cluster = cluster;
	}
	
}
